This disclosure relates to a method and system for managing system resources on distributed servers. More particularly, this disclosure relates to a processor configured to determine when a server should perform maintenance.
Currently, many distributed software servers are implemented using the JAVA programming language. One of the benefits of using the JAVA programming language is its support for runtime automatic memory management, known as “garbage collection (GC)”, implemented via an underlying JAVA Virtual Machine (JVM). DC is one type of maintenance performed on the server that is used to manage memory on the server. While GC can be used to improve memory allocations and deallocations within a program, there are drawbacks with using GC.
One drawback of using GC is that non-determinism may be introduced to the server. CC may be performed at any time based on the utilization of runtime resources. Thus, GC may be performed at an inopportune time when the server is under a heavy load. Executing GC when the server is serving a heavy load may cause server response to slow. Furthermore, because a server may begin GC at any time, happenstance, perform GC at the same time. If enough servers, that provide a particular service, perform GC at the same time, that service may become unresponsive across the network until GC is completed.
Another drawback of using GC is that when GC is being performed on a particular serer, that server itself can become unresponsive. The unresponsiveness may be caused by GC utilizing runtime resources on the server, which could cause other jobs to practically halt in progress until GC has completed.
Therefore, to prevent maintenance from causing services provided by the distributed servers from become unresponsive, maintenance processes, such as GC, may be actively managed.